Embedded systems are combinations of computer hardware and software, together with additional inputs (e.g. sensors, switches and the like) and outputs (such as actuators, or driving circuits, and the like) that are designed together as a system to carry out a particular function, or set of functions. Industrial machines, automobiles, consumer electronics, PDAs, mobile phones, household appliances and medical equipment are all examples of such embedded systems.
Embedded systems may be considered a form of distributed system, where a number of independent devices interoperate with each other to carry out the intended system functions.
Distributed systems are typically used to control the functioning of some process, such as a manufacturing process in a factory, or the functioning of a machine, such as a car, or other vehicle. A classic example of a distributed system is an electronic control system for a car, incorporating such things as the control system for the airbags, the electronic engine management system and the like. An example of a distributed system in this context is shown in FIG. 1 of the drawings.
When using a distributed system comprising two or more independent, interoperating devices, where the function of the system as a whole is distributed across the independent devices, it is desirable to be able to validate the operational status of the system as a whole, in order to determine that the entire system is operating correctly. This is particularly so in the case of safety critical systems, such as the above mentioned airbag control systems found in vehicles. The validation of the operational status of a system is also known as diagnosis of the system. Although diagnosis may be carried out continuously throughout the operating life of a distributed system, due to the bandwidth requirements, it is often only carried out on initialisation, or start up, of the distributed system.
Typically, distributed systems control or sense different parameters of the process or machine being controlled, and activate means dependent upon the sensed parameters. For example, in a vehicle, the airbag control system maybe continually sensing the acceleration rate of the vehicle, ready to fire the airbag detonators upon sensing a rapid deceleration. Thus, embedded/distributed systems typically require real world signals to be encoded into digital representations, for processing digitally within the embedded system, as well as digital signals to be outputted into the analog world, using actuators or other output devices. Therefore, typically, embedded/distributed systems have both digital and analog circuit portions, and are thus termed ‘mixed signal’. Examples of the analog portions are various sensors, current sources, voltage sources, voltage regulators analog to digital converters, and the like, meanwhile examples of the digital portions include processors and control logic, often in the form of fixed function state machines.
Distributed systems typically comprise a number of remote mixed signal devices (devices containing both digital and analog modules) that are controlled by a central Master Microcontroller Unit (MCU) that is in charge of the system operation as a whole. Also, typically, such distributed systems are connected by low bandwidth communications links, for example, Serial Peripheral Interface (SPI) communication links.
In the known methods of validating distributed systems, the main or master device retrieves and validates the operational status of all the linked remote mixed signal devices. This involves sending diagnosis control signals to the remote mixed signal devices, to control the diagnosis of the linked device, and receiving operational status information back from the linked devices once the particular diagnosis task is finished on that device. Triggering and retrieving the diagnosis responses from the other devices in the distributed system create high traffic load on the connecting links. Furthermore, the diagnosis function provokes a high load on the master device's system resources.
Furthermore, the sending of control signals to the linked device under diagnosis test must often be carried out in a tightly time coupled fashioned (i.e. the control signals must be sent in a particular and timely order, to ensure the distributed system as a whole is operating as the designers intended). The tight time requirements place even more strain on the communication links between the interoperating devices, often resulting in the slowing down of the distributed system as a whole. This is because of the high load on the master device (e.g. MCU) caused by requesting and evaluating the diagnosis data, as well as the large amount of traffic being sent over the communication links and the high utilisation of the linked interoperating device. Thus diagnosis of a distributed system generally causes a higher unavailability of the system components.
Thus it would be desirable to reduce diagnosis resource usage in distributed systems.